GCD
GCD(Great Common Divisor):
- gcd(a,b)=d⟹∃n,m∈Z,an+bm=d
- let n,m∈Z,min(an+bm)=gcd(a,b)
- We can also extent the definition to gcd a set of numbers
Co-prime:
- gcd(a,b)=1⟹a,b are co-prime
LCM
LCM(Least Common Multiple):
-
lcm(a,b)=d means k1a=k2b=d and d is the smallest positive integer.
Some chinese content following about Euclid's algorithm
-
∀b∈Z,∃a∈Z,b=aq+k,q,k∈Z
- k=0⟹a∣b
- a∣c,b∣c,gcd(a,b)=1⟹ab∣c
- a∣bc,gcd(a,b)=1⟹a∣c
- p∣ab⟹p∣a∨p∣b
-
π(n) 表示n之前的质数数量, limn→∞π(n)/nlogn=1
-
Pn 表示第n个素数,其time complexity O(nlogn)
-
∑i=1n1/i 的time complexity O(logn) 且 ∑1≤p≤n1/p 为 O(loglogn)
-
∀a,b,gcd(a,b)∣d⟺∃u,v∈Z,au+bv=d 裴蜀定理 (欧几里得算法扩展的基柱)
-
∀a,b,x,y,ax+by=d 求解用欧几里得算法,先用gcd(a,b)求x,y并根据x相应扩大
递归 gcd 的写法基于欧几里得. gcd(a,b)=gcd(a,a−nb)=gcd(a,amod b) (可以用induction 来证)
欧几里得算法e.g, 70x+81y=gcd(70,81)
- 70(x+y)+11y=gcd(81,11)⟹70x′+11y′=gcd(81,11)
- 11(6x′+y′)+4x′=gcd(81,11)⟹11x′′+4y′′=1 通过这里我们可以看到 x′=y′′,y′=x′′−a/b∗x′ 这里a/b=70/11
- 4(2x′′+y′′)+3x′′⟹4a+3b=1
- 3(a+b)+a=1⟹3a′+b′=1
- 最小的解为 b′=1,a′=0
- a=b′=1,a′=a+b=0⟹b=−1
- b=x′′=−1,a=2x′′+y′′=1⟹y′′=3
- x′=y′′=3,x′′=6x′+y′=−1⟹y′=−19
- y=y′=−19,x′=x+y=3⟹x=22
- x=22,y=−19 is the solution
将该算法抽象化, 我们得到 ax+by=gcd(a,b)
- b(kx+y)+(a%b)x=gcd(a,b) where k=a/b
- 将其再次抽象化 bx′+(a%b)y′=gcd(a,b) 并重复1,2 直到3发生
- 当 a%b==gcd(a,b) 时我们可以得到最小解y’=1,x′=0 在此时我们可以得到 x=y′=1,y=x′−kx 并通过该方式逐步往前推回从而得到式子的解
根据题目意思我们还可以将其写为其他方式,若要求 x,y>0, 我们还可以总结出
- 0<x+bk/d<b for some k∈Z 如果k>0说明 x<0
lcm(a,b)=(a/gcd(a,b))∗b